package com.caochenlei.divideAndConquer;

public class Hanoi {
    public static void main(String[] args) {
        int n = 3;//我们这里金片假设为3片
        hanoi(n, 'A', 'B', 'C');
    }

    public static void move(char from, char to) {
        System.out.printf("%c to %c\n", from, to);
    }

    public static void hanoi(int n, char a, char b, char c) {
        //当只剩下一个金片的时候直接从A柱移动到C柱
        if (n == 1) {
            move(a, c);
        }
        //当n>=2时就拆成两部分（n-1）代表第二部分
        else {
            //将第二部分由A柱移动到B柱
            hanoi(n - 1, a, c, b);
            //将第一部分由A柱移动到C柱
            move(a, c);
            //将第二部分由B柱移动到C柱
            hanoi(n - 1, b, a, c);
        }
    }
}
